/*
 * Copyright (C) 2020 Open Source Robotics Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
*/

%module temperature
%{
#include <gz/math/Temperature.hh>
%}

namespace gz
{
  namespace math
  {
    class Temperature
    {
      public: Temperature();
      public: ~Temperature();
      public: Temperature(double _temp);
      public: static double KelvinToCelsius(double _temp);
      public: static double KelvinToFahrenheit(double _temp);
      public: static double CelsiusToFahrenheit(double _temp);
      public: static double CelsiusToKelvin(double _temp);
      public: static double FahrenheitToCelsius(double _temp);
      public: static double FahrenheitToKelvin(double _temp);
      public: void SetKelvin(double _temp);
      public: void SetCelsius(double _temp);
      public: void SetFahrenheit(double _temp);
      public: double Kelvin() const;
      public: double Celsius() const;
      public: double Fahrenheit() const;
      public: double operator()() const;
      public: Temperature operator+(double _temp);
      public: Temperature operator+(const Temperature &_temp);
      public: Temperature operator-(double _temp);
      public: Temperature operator-(const Temperature &_temp);
      public: Temperature operator*(double _temp);
      public: Temperature operator*(const Temperature &_temp);
      public: Temperature operator/(double _temp);
      public: Temperature operator/(const Temperature &_temp);
      public: bool operator==(const Temperature &_temp) const;
      public: bool operator==(double _temp) const;
      public: bool operator<(const Temperature &_temp) const;
      public: bool operator<(double _temp) const;
      public: bool operator<=(const Temperature &_temp) const;
      public: bool operator<=(double _temp) const;
      public: bool operator>(const Temperature &_temp) const;
      public: bool operator>(double _temp) const;
      public: bool operator>=(const Temperature &_temp) const;
      public: bool operator>=(double _temp) const;
    };
  }
}
